
--Usa el archivo tcp.lua disponible en el directorio actual
require 'tcp'

--Setea el valor de una propiedad del nodo LUA actual
--@param propName Nombre de la propiedad del nodo LUA ha ser seteada
--@param propValue Valor ha ser atribuido a la propiedad


local dx,dy = canvas:attrSize()


 function resultado(m1,m2,px,py)
 		if((m1/m2)>=(50/100)) then
 			canvas:compose(px,py,canvas:new('media/ok.png'))
 			return --"Si Paso"
 				
 		else
 			canvas:compose(px,py,canvas:new('media/mal.png'))
 			return --"No Paso"
 		end
 end	
 

function setLuaPropertie(propName, propValue)
    local evt = {
        class = 'ncl',
        type  = 'attribution',
        name  = propName,
        value = propValue, 
    }
    
   
    evt.action = 'start'; event.post(evt)
    evt.action = 'stop' ; event.post(evt)
end 

function writeText(text)
   --canvas:attrColor("black")
   --canvas:drawRect("fill", 0,0, canvas:attrSize())
	--RGBA: Red, Blue, Green, Alpha (0=transparente total .. 255=opaco total)
	
   
   canvas:attrColor(255,255,255,0)
   canvas:clear()
   
   canvas:attrFont("vera", 22)
   canvas:drawText(10, 30, text)
   canvas:flush()
end


function writeResult(votos) 
   canvas:attrColor(255,255,255,0)
   canvas:clear()
   --obtenemos las dimensiones de la region(los valores dx y dy estaran en pixeles)
   
   
   --imagenes con la condicion (si pasaron la aprobacion es decir el si debe ser mas que 50%)

   
   
    
  --primer cuadro estadistico rebagliati    
   n1 = votos.rebagliati.si 
   n2 = votos.rebagliati.no 
   n3 = votos.rebagliati.nose
   sum = n1 + n2 + n3 
   
   
   canvas:attrFont("vera",17)
   canvas:attrColor('green')
   canvas:drawText((1/100)*dx,(2/100)*dy, "Hospitales que pasaron el 50% de aprobacion")
   canvas:attrFont("vera", 24)
   canvas:attrColor('red')
   canvas:drawText((40/100)*dx,(60/100)*dy, "Cuadros estadisticos:")
   canvas:attrFont("vera", 20)
   canvas:attrColor('blue')
   canvas:drawText((2/100)*dx,(70/100)*dy, "Si: "..n1)
   canvas:drawRect('fill',(12/100)*dx,(71/100)*dy,(n1/sum)*(21/100)*dx,(4/100)*dy)
   
   canvas:drawText((2/100)*dx,(75/100)*dy, "No: "..n2)
   canvas:drawRect('fill',(12/100)*dx,(76/100)*dy,(n2/sum)*(21/100)*dx,(4/100)*dy)
   
   canvas:drawText((2/100)*dx,(80/100)*dy, "N/o: "..n3)
   canvas:drawRect('fill',(12/100)*dx,(81/100)*dy,(n3/sum)*(0.21)*dx,(4/100)*dy)
   
   canvas:attrFont("vera", 24)
   canvas:attrColor('red')
   canvas:drawText((4/100)*dx,(86/100)*dy, "REBAGLIATI")
   --canvas:attrFont("vera", 22)
   --canvas:attrColor('black')
   --canvas:drawText((25/100)*dx,(18/100)*dy,""..resultado(n1,sum))
   resultado(n1,sum,(25/100)*dx,(18/100)*dy)
   
   
  --segundo cuadro estadistico Almenara    
   n1 = votos.almenara.si 
   n2 = votos.almenara.no 
   n3 = votos.almenara.nose
   sum = n1 + n2 + n3 
   
   
   
   
   
   canvas:attrFont("vera", 20)
   canvas:attrColor('blue')
   
   canvas:drawText((34/100)*dx,(70/100)*dy, "Si: "..n1)
   canvas:drawRect('fill',(44/100)*dx,(71/100)*dy,(n1/sum)*(21/100)*dx,(4/100)*dy)
   
   
   canvas:drawText((34/100)*dx,(75/100)*dy, "No: "..n2)
   canvas:drawRect('fill',(44/100)*dx,(76/100)*dy,(n2/sum)*(21/100)*dx,(4/100)*dy)
   
   canvas:drawText((34/100)*dx,(80/100)*dy, "N/o: "..n3)
   canvas:drawRect('fill',(44/100)*dx,(81/100)*dy,(n3/sum)*(21/100)*dx,(4/100)*dy)
   
   canvas:attrFont("vera", 24)
   canvas:attrColor('red')
   canvas:drawText((38/100)*dx,(86/100)*dy, "ALMENARA")
   canvas:attrFont("vera", 22)
   canvas:attrColor('black')
   --canvas:drawText((25/100)*dx,(36/100)*dy,""..resultado(n1,sum))
   resultado(n1,sum,(25/100)*dx,(36/100)*dy)
  
  --tercer cuadro estadistico sabogal    
   n1 = votos.sabogal.si 
   n2 = votos.sabogal.no 
   n3 = votos.sabogal.nose
   sum = n1 + n2 + n3 
   
   
   canvas:attrFont("vera", 20)
   canvas:attrColor('blue')
   
   canvas:drawText((66/100)*dx,(70/100)*dy, "Si: "..n1)
   canvas:drawRect('fill',(76/100)*dx,(71/100)*dy,(n1/sum)*(21/100)*dx,(4/100)*dy)
   
   canvas:drawText((66/100)*dx,(75/100)*dy, "No: "..n2)
   canvas:drawRect('fill',(76/100)*dx,(76/100)*dy,(n2/sum)*(21/100)*dx,(4/100)*dy)
   
   canvas:drawText((66/100)*dx,(80/100)*dy, "N/o: "..n3)
   canvas:drawRect('fill',(76/100)*dx,(81/100)*dy,(n3/sum)*(21/100)*dx,(4/100)*dy)
   
   canvas:attrFont("vera", 24)
   canvas:attrColor('red')
   canvas:drawText((70/100)*dx,(86/100)*dy, "SABOGAL")
   canvas:attrFont("vera", 22)
   canvas:attrColor('black')
   --canvas:drawText((25/100)*dx,(56/100)*dy,""..resultado(n1,sum))
   resultado(n1,sum,(25/100)*dx,(56/100)*dy)

 
 
   canvas:flush()
end


function handler (evt)
    
	if evt.class ~= 'ncl' or evt.type ~= 'attribution'or evt.action ~= 'start' or evt.name ~= 'voto' then 
       return 
    end
      		archivo = io.open("hospital.txt","r")
           	local nombre = archivo:read()
           archivo:close()
            
            --print("\\\\\\\\\\ HOSPITAL: "..archivo)  
            
    local host = "192.168.1.48"
    
    print(evt.name, evt.value)
    
    tcp.execute(
        function ()
            --writeText("Obteniendo resultado...")
            tcp.connect(host, 80)
            --conecta no servidor
            print("Conectado a "..host)
                      
            --local url = "GET http://"..host.."/votacion/votacion.php?voto="..evt.value.."\n"
            local url = "GET http://"..host.."/votacion/votacion.php?voto="..evt.value.."&&hospital="..nombre.."\n"
            
            print("URL: "..url)
            --envia una solicitud HTTP para grabar voto en el servidor de DB MySQL 190.12.88.10
            tcp.send(url)
           	
           	--obtiene todo el contenido de la pagina accesada
            local result = tcp.receive("*a")
            if result then
            	print("Datos de conexion TCP recibidos")
		    	
		        f = loadstring(result)
				if f then 
				   f()
				   writeResult(votos)
			       

				end
		    else
            	print("Error al recibir datos de la conexion TCP")
            	if evt.error ~= nil then 
		        	result = 'error: ' .. evt.error
		        end
	        end
	        
            tcp.disconnect()
        end
    )
end

event.register(handler)
